<?php

namespace Dreamcat\PropertyAnalysis\Pojo;

use JetBrains\PhpStorm\Immutable;
use JetBrains\PhpStorm\Pure;

/**
 * 类的分析结果
 * @author vijay
 */
class AnalysisResult
{
    /** @var PropertyResult[] 分析出的属性列表结果 */
    private array $propertyList = [];

    /**
     * @param string $className 分析的类名
     */
    public function __construct(#[Immutable] private string $className)
    {
    }

    /**
     * @return string 分析的类名
     */
    #[Pure]
    public function getClassName(): string
    {
        return $this->className;
    }

    /**
     * @return PropertyResult[] 分析出的属性列表结果
     */
    #[Pure]
    public function getPropertyList(): array
    {
        return $this->propertyList;
    }

    /**
     * @param PropertyResult[] $propertyList 分析出的属性列表结果
     */
    public function setPropertyList(array $propertyList): void
    {
        $this->propertyList = $propertyList;
    }

    /**
     * 添加一个属性分析结果
     * @param string $propertyName 属性名
     * @param PropertyResult $propertyResult 属性结果
     */
    public function addPropertyResult(string $propertyName, PropertyResult $propertyResult): void
    {
        $this->propertyList[$propertyName] = $propertyResult;
    }

    /**
     * @param string $propertyName 属性名称
     * @return PropertyResult|null 属性分析结果，不存在返回null
     */
    #[Pure]
    public function getPropertyResult(string $propertyName): ?PropertyResult
    {
        return $this->propertyList[$propertyName] ?? null;
    }
}

# end of file
